// 输入年和月，输出该月有几天。

#include <stdio.h>
// 银行存款有3个月、6个月定期等。从键盘输入一个日期（即为存款日期）以及定期的时间长度（单位为月，输入的时间长度可为小于等于60的任意正整数），请编程输出该定期存款的到期日期。 下面以3个月定期为例，说明定期的概念。

// 比如：

// 输入2014年4月30日，则到期日是2014年7月30日；

// 输入2014年3月31日，则到期日是2014年6月30日（6月没有31日，所以30日就到期）；

// 输入2014年11月30日，则到期日是2015年2月28日；

// 输入2015年11月30日，则到期日是2016年2月29日。

// ## 输入说明 :

// 共输入4个整数，中间以空格分隔，第一个整数表示年，第二个整数表示月，第三个整数表示日，第四个整数表示定期长度（单位为月）。

// ## 输出说明 :

// 输出到期日期，共输出三个整数，中间以一个空格分隔，行首与行尾均无空格。

char get_day(int year, int month)
{
    static char month_day[] = {
        31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    bool isRun;
    if (year % 100 == 0)
    {
        isRun = year % 400 == 0;
    }
    else
    {
        isRun = year % 4 == 0;
    }
    auto daycnt = month_day[month - 1];
    if (isRun && month == 2)
    {
        daycnt++;
    }
    return daycnt;
}
int main()
{

    int year, month, day, len;
    scanf("%d %d %d %d", &year, &month, &day, &len);
    while (len > 0)
    {
        month++;
        if (month == 13)
        {
            year++;
            month = 1;
        }
        len--;
    }
    auto day_max = get_day(year, month);
    if (day > day_max)
    {
        day = day_max;
    }
    printf("%d %d %d", year, month, day);

    return 0;
}